package com.asia.algorithmcode.array;

/**
 * @Num: 27. 移除元素
 * @Addr: https://leetcode.cn/problems/remove-element/description/
 * @Type: easy
 * @Author: wanfu
 * @Date: 2024/7/26 星期五 15:39
 * @Desc: 这题是快慢指针的变形引用，最经典的应当属于寻找一个链表中的中间元素。慢指针变更元素数值是实现原地元素变换的精髓
 */
class Solution_removeElement {
    public int removeElement(int[] nums, int val) {
        if (nums.length == 0) {
            return 0;
        }

        int slow = 0;
        for (int fast = 0; fast < nums.length; fast++) {
            while (fast < nums.length - 1 && nums[fast] == val) {
                fast++;
            }
            if (nums[fast] != val) {
                nums[slow++] = nums[fast];
            }
        }
        return slow;
    }
}
